Joose.Managed.PropertySet.Namespace = new Joose.Proto.Class('Joose.Managed.PropertySet.Namespace', {
    
    isa : Joose.Managed.PropertySet.Containable,
    
    propertyMetaClass : null,
    
    
    computeContainer : function (props) {
        this.container = this.targetMeta.c
    },
    
    
    apply : function (target) {
        this.each(function (property, name) {
            this.container[name] = property
        }, this)
    },
    
    
    unapply : function () {
        this.each(function (property, name) {
            try {
                delete this.container[name]
            } catch(e) {
                this.container[name] = undefined
            }
        }, this)
    },
    
    
    
    prepareApply : function () {
    },
    
    
    addProperty : function (name, value) {
        if (value && value.meta && value.meta.meta.hasAttribute('ns')) value.meta.parent = this.targetMeta.ns
        
        return this.container[name] = this.properties[name] = value
    },
    

    haveOwnProperty : function (name) {
        return this.haveProperty(name);// && this.container.hasOwnProperty(name)
    },
    
    
    addPropertyObject : function (object) {
    }
    
    
}).c
